package com.ruicar.afs.cloud.apply.pre.loan.mq.sender;

import com.ruicar.afs.cloud.common.modules.dto.mq.approve.*;
import com.ruicar.afs.cloud.common.modules.dto.mq.approveprev.ApprovePrevInfoDto;
import com.ruicar.afs.cloud.common.mq.rabbit.anno.send.AfsRabbitMqClient;
import com.ruicar.afs.cloud.common.mq.rabbit.anno.send.AfsRabbitMqSender;
import com.ruicar.afs.cloud.common.mq.rabbit.message.AfsTransEntity;

/**
 * MQ消息发送
 *
 * @author 耿继辉
 */
@AfsRabbitMqClient
public interface CaseSubmitInfoSender {

    /**
     * 提交案件-消息发送
     * 传对象
     *
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendForCaseSubmit(AfsTransEntity<OrderSubmitInfo> afsTransEntity);

    /**
     * 加急-消息发送
     * 传对象
     *
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendForEmergencyCaseSubmit(AfsTransEntity<UrgentInfoSubmitInfo> afsTransEntity);


    /**
     * 资产变更
     * 传对象
     *
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendAssertChangeCaseSubmit(AfsTransEntity<ApproveSpecialSubmitInfo> afsTransEntity);

    /**
     * 资复议
     * 传对象
     *
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendReconsiderCaseSubmit(AfsTransEntity<ReconsiderationDto> afsTransEntity);


    /**
     * 预审批MQ
     *
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void preApproveMessageSender(AfsTransEntity<ApprovePrevInfoDto> afsTransEntity);

    /**
     * 附条件核准MQ
     *
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void conditionApprovalMessageSender(AfsTransEntity<ConditionalApprovalReturnInfo> afsTransEntity);


    /**
     * <p>description：</p>
     * 撤回申请
     * @author ma_xueyu
     * @date 2020年8月31日
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void callBackMessageSender(AfsTransEntity<CallBackApplyDto> afsTransEntity);

    /**
     * <p>description：</p>
     * 回复审批撤回结果
     * @author ma_xueyu
     * @date 2020年9月15日
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void approveCallBackApplyResultMessageSender(AfsTransEntity<CallBackApplyResultDto> afsTransEntity);
    /**
     * <p>description：</p>
     * 订单撤销
     * @author panhj
     * @date 2020年10月15日
     * @param afsTransEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void applyCancelSender(AfsTransEntity<RepealDealDto> afsTransEntity);

}
